home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / glass / glass.lha / GLASS / glassme / gme04 < prev    next >
Text File  |  1991-02-19  |  3KB  |  103 lines

  1.  
  2. MINUS 1 :: @minus 1 (x>).
  3.  
  4. minus 1 (m 1>):
  5.   ^!! *(nr>),
  6.   compute (>nr+"-1",m 1>).  
  7.     
  8. %TEX     
  9. \subsubsection{Do operations on integers VBuiltin}
  10. %
  11.  
  12. INT INT to INT :: @ INT int to int (op>).
  13.  
  14.  
  15. INT int to int (op>) : !*^! (op>), ->;
  16. INT int to int ("%">) : "MOD",->;
  17. INT int to int ("+">) : "+2",->;
  18. INT int to int ("-">) : "-2".
  19.  
  20. int int to int(>dyadic,>a 1 * a 2 * _ ,>node):
  21.     where (>a1,ParInt* I NUM * val 1>),
  22.     where (>a2,ParInt* I NUM * val 2>),
  23.     dc (>val 1+" "+val 2+dyadic+"ps.\n",DC Result>),
  24.     repair (>node,>ParInt, >I NUM * DC Result ).
  25.  
  26.  
  27. DC Result :: @ dc result (x>).
  28. FLOAT FLOAT to FLOAT :: @ INT int to int (op>).
  29.  
  30. dc result ("_"+x>):
  31.     "-", ->, ^!!*(x>);
  32. dc result (x>):
  33.    ^!!*(x>).
  34.  
  35. %TEX     
  36. \subsubsection{Do operations on floats VBuiltin}
  37. %
  38. float float to float(>dyadic,>a 1 * a 2 * _,>node):
  39.     where (>a1,ParFlo* F NUM * val 1>),
  40.     where (>a2,ParFlo* F NUM * val 2>),
  41.     make exponent int (>dyadic,>val 2,v 2>), 
  42.     dc (>val 1+" "+v 2+dyadic+"ps.\n",DC Result>),
  43.     repair (>node,>ParFlo, >F NUM * DC Result ).
  44.  
  45. make exponent int (>"^",>v,v 2>): ->,
  46.    real to int (>v,v 2>);
  47. make exponent int (>x,>v,v>):.
  48.  
  49.  
  50.  
  51. %TEX     
  52. \subsubsection{Do any any to bool, float, int operations VBuiltin}
  53. %
  54. A A to BOOL :: @ A a to bool (op>).
  55.  
  56.  
  57. A a to bool (op>) : !<>! (op>), ->;
  58. A a to bool ("!>">) : "<=", ->;
  59. A a to bool ("!<">) : ">=". 
  60.  
  61.  
  62. a a to int (>a 1* a 2 * _,>node):
  63.     where (> a 1 , t* f i num * val 1>),
  64.     where (> a 2 , s* f i num * val 2>),
  65.     dc (>val 1+" "+val 2+"/ 0kps.\n",DC Result>),
  66.     repair (>node,>ParInt , >I NUM * DC Result ).
  67.  
  68. a a to float (>a 1* a 2 * _  ,>node):
  69.     where (> a 1 , t* f i num * val 1>),
  70.     where (> a 2 , s* f i num * val 2>),
  71.     dc (>val 1+" "+val 2+"/ ps.\n",DC Result>),
  72.     repair (>node,>ParFlo , >F NUM * DC Result ).
  73.  
  74. a a to bool (>relation,>a 1 * a 2 * _ ,>node):
  75.     where (> a 1 , t* f i num * v 1>),
  76.     where (> a 2 , s* f i num * v 2>),
  77.     inverse relation (>relation,inverse>),
  78.     dc (>v 2+" "+v 1+relation+"x "+v 2 +" "+ v 1+inverse+"y\n",result a>),
  79.     repair (>node,>ParBool , >BOOL * result a ).
  80.  
  81. inverse relation (>"!"+r,r>):->;
  82. inverse relation (>r,"!"+r>):.
  83.  
  84. %TEX     
  85. \subsubsection{Do boolean operations VBuiltin}
  86. %
  87.  
  88. BOOL BOOL to BOOL :: @ BOOL bool to bool (op>).
  89.  
  90.  
  91. BOOL bool to bool (x>) : !&|! (x>).
  92.  
  93. bool bool to bool (>dyadic,>arg 1 * arg  2*_, >node):
  94.     where (>arg 1,ParBool* BOOL * val 1>),
  95.     where (>arg 2,ParBool* BOOL * val 2>),
  96.     bool op (> dyadic,>val 1,>val 2,result a>),
  97.     repair (>node,>ParBool , > BOOL * result a ).
  98.  
  99. bool op (>"|",>v,>w,r>): ->,
  100.     bool or (>v,>w,r>);
  101. bool op (>"&",>v,>w,r>):
  102.     bool and (>v,>w,r>).
  103.